package com.itheima.utils;

import com.aliyuncs.exceptions.ClientException;
import com.itheima.pojo.Permission;
import com.itheima.pojo.Role;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

public class Test {
    @org.junit.Test
    public void test1(){
        QiniuUtils.upload2Qiniu("F:\\JAVA\\就业班笔记\\传智健康\\day04\\资源\\图片资源\\03a36073-a140-4942-9b9b-712cecb144901.jpg","abc.jpg");
    }
    @org.junit.Test
    //读取并操作excel表格
    public void test2() throws IOException, InvalidFormatException {
        //从磁盘中将excel表格加载到内存中，获取工作薄
        XSSFWorkbook workbook = new XSSFWorkbook(new File("D:\\poi.xlsx"));

        //获取工作表格中的工作表  索引从0开始
        XSSFSheet sheetAt = workbook.getSheetAt(0);
        System.out.println(sheetAt);
        //通过工作簿遍历每一行
        for (Row cells : sheetAt) {
        //一行中有多个单元格，获取每一行中的每一个单元格
            for (Cell cell : cells) {

                //获取单元格类型对应的int值
                int cellType = cell.getCellType();
                //通过对应的int值获取单元格的类型

                //获取每一个单元格的String的值
                System.out.println(cell.getStringCellValue());
            }
        }
        //
        int lastRowNum = sheetAt.getLastRowNum();
        System.out.println(lastRowNum);//索引从0开始
        for (int i = 0; i <= lastRowNum; i++) {
            //返回每一行
            XSSFRow row = sheetAt.getRow(i);
            //通过每一行获取，最后一个有数据的单元格的索引  从1开始
            short lastCellNum = row.getLastCellNum();
            for (short i1=0; i1<lastCellNum;i1++){
                //获取每一行中的每一个单元格
                XSSFCell cell = row.getCell(i1);
                String stringCellValue = cell.getStringCellValue();
                System.out.println(stringCellValue);
            }
        }

    }

    @org.junit.Test
    //创建excel表格并且传到本地
    public void test3() throws IOException, InvalidFormatException {
        //在内存中新建一个工作薄
     XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
        //在新建一个工作表
        XSSFSheet itcast = xssfWorkbook.createSheet("itcast");
        //通过工作薄对象新建行 索引从0开始
        XSSFRow row = itcast.createRow(0);
        //通过行对象新建单元格，给单元格写入数据  索引从0开始
          row.createCell(0).setCellValue("id");
          row.createCell(1).setCellValue("姓名");
          row.createCell(2).setCellValue("年龄");
          row.createCell(3).setCellValue("地址");
        XSSFRow row1 = itcast.createRow(1);
        //给每个单元格赋值
        row1.createCell(0).setCellValue("1");
        row1.createCell(1).setCellValue("张三");
        row1.createCell(2).setCellValue("18");
        row1.createCell(3).setCellValue("111");
        //创建第三行，并且创建第三行中的单元格，进行赋值
        XSSFRow row2 = itcast.createRow(2);
        row2.createCell(0).setCellValue("2");
        row2.createCell(1).setCellValue("李四");
        row2.createCell(2).setCellValue("18");
        row2.createCell(3).setCellValue("1");
        //创建第四行，并且创建第四行中的单元格，进行赋值
        XSSFRow row3 = itcast.createRow(3);
        row3.createCell(0).setCellValue("3");
        row3.createCell(1).setCellValue("李四");
        row3.createCell(2).setCellValue("18");
        row3.createCell(3).setCellValue("111");
        //合并单元格代码   合并从第二行第一个单元格到第三行第一个单元格
        CellRangeAddress c1 = new CellRangeAddress(2,3,1,1);
        //合并第一行的第二个单元格到第三行的第二个单元格    合并行，那么列的单元格一致，合并列那么行的单元格一致
        CellRangeAddress c2 = new CellRangeAddress(1,3,2,2);
        itcast.addMergedRegion(c1);
        itcast.addMergedRegion(c2);
        //创建输出流对象并指定位置，通过xssfWorkbook对象.write将excel表格写出
        FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\hello.xlsx"));
        xssfWorkbook.write(fileOutputStream);

    }
    @org.junit.Test
//创建excel表格并且传到本地
    public void test6() throws Exception {
//        HashMap<Object, Object> objectObjectHashMap = new HashMap<>();
//        objectObjectHashMap.put(1,1);
//        objectObjectHashMap.put(2,1);
//        objectObjectHashMap.put(3,1);
//        System.out.println(objectObjectHashMap);
        ArrayList<Permission> objects = new ArrayList<>();
        objects.add(new Permission());
        Set<Role> set = new HashSet<>();
        set.add(new Role());
        for (Permission object : objects) {
            object.setRoles(set);
        }
        System.out.println(objects);
//        objects.add(objectObjectHashMap);
//        objects.add(objectObjectHashMap);
//        objects.add(objectObjectHashMap);
//        System.out.println(objects);
//        System.out.println(  DateUtils.parseDate2String(new Date(),"YYYY-MM"));

//        System.out.println(  DateUtils.parseDate2String(new Date(),"YYYY-MM-dd"));
//        System.out.println(   DateUtils.parseDate2String(DateUtils.getFirstDay4ThisMonth()));


    }
    @org.junit.Test
    //测试短信发送
    public void test5() throws ClientException {
        Integer integer = ValidateCodeUtils.generateValidateCode(4);
        SMSUtils.sendShortMessage("SMS_179215621","13358371215",null);

    }
    @org.junit.Test
    //测试解析经纬度
    public void test8() {
//        String s = MapUtils.getLngAndLat("北京市海淀区上地十街十号");
//        System.out.println(s);

    }
}

